﻿using System;
using Glue.Internals.Nulls;

namespace Glue.Internals
{
    /// <summary>
    /// Represents How to technically access an objectmember
    /// </summary>
    /// <seealso cref="IObjectMember"/>
    internal interface IObjectMemberAccessor
    {
        String Name { get; }
        Maybe InvokeGet(object toInvokeOn);
        void InvokeSet(object toInvokeOn, object toSet);
        bool CanGetValues { get; }
        bool CanSetValues { get; }
        Type PropertyType { get; }
        bool CanMapFrom(object thisObject);
    }
}
